package com.hotel.vo;

import com.fasterxml.jackson.annotation.JsonFormat;

import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * 会员视图对象
 */
public class MemberVO {
    
    private Long id;
    
    private String memberNo;
    
    private String name;
    
    private String phone;
    
    private String idCard;
    
    private String email;
    
    private String gender;
    
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDate birthday;
    
    private String level;
    
    private String levelName; // 等级名称
    
    private Integer points;
    
    private Double totalConsumption;
    
    private Integer status;
    
    private String statusName; // 状态名称
    
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime lastVisitTime;
    
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;
    
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;
    
    // 扩展字段
    private Integer age; // 年龄
    
    private String genderName; // 性别名称
    
    private Integer visitCount; // 访问次数
    
    private Double avgConsumption; // 平均消费
    
    // 构造函数
    public MemberVO() {}
    
    // Getter和Setter方法
    public Long getId() {
        return id;
    }
    
    public void setId(Long id) {
        this.id = id;
    }
    
    public String getMemberNo() {
        return memberNo;
    }
    
    public void setMemberNo(String memberNo) {
        this.memberNo = memberNo;
    }
    
    public String getName() {
        return name;
    }
    
    public void setName(String name) {
        this.name = name;
    }
    
    public String getPhone() {
        return phone;
    }
    
    public void setPhone(String phone) {
        this.phone = phone;
    }
    
    public String getIdCard() {
        return idCard;
    }
    
    public void setIdCard(String idCard) {
        this.idCard = idCard;
    }
    
    public String getEmail() {
        return email;
    }
    
    public void setEmail(String email) {
        this.email = email;
    }
    
    public String getGender() {
        return gender;
    }
    
    public void setGender(String gender) {
        this.gender = gender;
    }
    
    public LocalDate getBirthday() {
        return birthday;
    }
    
    public void setBirthday(LocalDate birthday) {
        this.birthday = birthday;
    }
    
    public String getLevel() {
        return level;
    }
    
    public void setLevel(String level) {
        this.level = level;
    }
    
    public String getLevelName() {
        return levelName;
    }
    
    public void setLevelName(String levelName) {
        this.levelName = levelName;
    }
    
    public Integer getPoints() {
        return points;
    }
    
    public void setPoints(Integer points) {
        this.points = points;
    }
    
    public Double getTotalConsumption() {
        return totalConsumption;
    }
    
    public void setTotalConsumption(Double totalConsumption) {
        this.totalConsumption = totalConsumption;
    }
    
    public Integer getStatus() {
        return status;
    }
    
    public void setStatus(Integer status) {
        this.status = status;
    }
    
    public String getStatusName() {
        return statusName;
    }
    
    public void setStatusName(String statusName) {
        this.statusName = statusName;
    }
    
    public LocalDateTime getLastVisitTime() {
        return lastVisitTime;
    }
    
    public void setLastVisitTime(LocalDateTime lastVisitTime) {
        this.lastVisitTime = lastVisitTime;
    }
    
    public LocalDateTime getCreateTime() {
        return createTime;
    }
    
    public void setCreateTime(LocalDateTime createTime) {
        this.createTime = createTime;
    }
    
    public LocalDateTime getUpdateTime() {
        return updateTime;
    }
    
    public void setUpdateTime(LocalDateTime updateTime) {
        this.updateTime = updateTime;
    }
    
    public Integer getAge() {
        return age;
    }
    
    public void setAge(Integer age) {
        this.age = age;
    }
    
    public String getGenderName() {
        return genderName;
    }
    
    public void setGenderName(String genderName) {
        this.genderName = genderName;
    }
    
    public Integer getVisitCount() {
        return visitCount;
    }
    
    public void setVisitCount(Integer visitCount) {
        this.visitCount = visitCount;
    }
    
    public Double getAvgConsumption() {
        return avgConsumption;
    }
    
    public void setAvgConsumption(Double avgConsumption) {
        this.avgConsumption = avgConsumption;
    }
    
    @Override
    public String toString() {
        return "MemberVO{" +
                "id=" + id +
                ", memberNo='" + memberNo + '\'' +
                ", name='" + name + '\'' +
                ", phone='" + phone + '\'' +
                ", idCard='" + idCard + '\'' +
                ", email='" + email + '\'' +
                ", gender='" + gender + '\'' +
                ", birthday=" + birthday +
                ", level='" + level + '\'' +
                ", levelName='" + levelName + '\'' +
                ", points=" + points +
                ", totalConsumption=" + totalConsumption +
                ", status=" + status +
                ", statusName='" + statusName + '\'' +
                ", lastVisitTime=" + lastVisitTime +
                ", createTime=" + createTime +
                ", updateTime=" + updateTime +
                ", age=" + age +
                ", genderName='" + genderName + '\'' +
                ", visitCount=" + visitCount +
                ", avgConsumption=" + avgConsumption +
                '}';
    }
}